/*
*用途：role表的CURD
*作者：hwq  
*说明： code=1表示成功  code=0表示查询条件有误  code=-1表示查询过程中出现错误
*创建日期：
*/

const Role = require('../model/role')
const Sequelize = require('sequelize')
const Op = Sequelize.Op

function getType(instance) {
  return Object.prototype.toString.call(instance).slice(8, -1);
}

module.exports = {
  // 获取所有信息
  getalllist: function (reslove, reject) {
    Role.findAll({
      where: {
        id: {
          [Op.gt]: 0
        }
      }
    })
      .then(function (result) {
        let array = []
        result.forEach(function (item, index) {
          array.push(item.dataValues)
        })
        reslove({
          code: 1,
          model: array
        })
      })
      .catch(function (error) {
        reject({
          code: -1,
          model: error
        })
      })
  },
  // 获取分页的信息
  getpagelist: function (pagesize, pageindex, reslove, reject) {
    let size = parseInt(pagesize) || 10
    let index = parseInt(pageindex) || 1

    Role.findAll({
      where: {
        id: {
          [Op.gt]: 0
        }
      },
      offset: (index - 1) * size,
      limit: size
    })
      .then(function (result) {
        let array = []
        result.forEach(function (item, index) {
          array.push(item.dataValues)
        })
        reslove({
          code: 1,
          model: array
        })
      })
      .catch(function (error) {
        reject({
          code: -1,
          model: error
        })
      })
  },
  // 根据条件返回一个符合条件的信息
  findone: function (where, reslove, reject) {
    if (getType(where) === 'Object') {
      Role.findOne({
        where: where
      })
        .then(function (result) {
          reslove({
            code: 1,
            model: result
          })
        })
        .catch(function (error) {
          reject({
            code: -1,
            model: error
          })
        })
    } else {
      reject({
        code: 0,
        model: null
      })
    }
  },
  // 根据条件删除符合条件的信息
  delete: function (where, reslove, reject) {
    if (getType(where) === 'Object') {
      Role.destroy({
        where: where
      })
        .then(function (result) {
          reslove({
            code: 1,
            count: result
          })
        })
        .catch(function (error) {
          reject({
            code: -1,
            count: 0
          })
        })
    } else {
      reject({
        code: 0,
        count: 0
      })
    }
  },
  // 增加信息
  add: function (model, reslove, reject) {
    if (getType(model) === 'Object') {
      Role.create({
        name: model.name,
        type: model.type
      })
        .then(function (result) {
          reslove({
            code: 1,
            model: result
          })
        })
        .catch(function (error) {
          reject({
            code: -1,
            model: error
          })
        })
    } else {
      reject({
        code : 0,
        model : null
      })
    }
  },
  // 更新信息
  update: function (model, reslove, reject) {
    if (getType(model) === 'Object') {
      Role.update({
        name: model.name,
        type: model.type
      },{
        where: {
          id: {
            [Op.eq]: model.id
          }
        }
      })
        .then(function (result) {
          reslove({
            code: 1,
            count: result[0]
          })
        })
        .catch(function (error) {
          reject({
            code: -1,
            count: 0
          })
        })
    } else {
      reject({
        code : 0,
        count: 0
      })
    }
  }
}